/*
 * @description:
 * @Author: jhw
 * @Date: 2025-06-30 10:58:28
 * @LastEditors: jhw
 * @LastEditTime: 2025-06-30 19:01:07
 */
import { TrackOpTypes } from "../utils.js";
let shouldTrack = true; // 是否需要收集依赖

/**
 * @description: 暂停收集依赖
 */
export function pauseTracking() {
  shouldTrack = false; // 暂停收集依赖
}

/**
 * @description: 恢复收集依赖
 */
export function enableTracking() {
  shouldTrack = true; // 恢复收集依赖
}

/**
 * 收集器：用于收集依赖
 * @param {*} target 原始对象
 * @param {*} type 进行的操作类型
 * @param {*} key 针对哪一个属性
 */
export default function (target, type, key) {
  if (!shouldTrack) {
    // 如果不需要收集依赖，直接返回
    return;
  }

  if (type === TrackOpTypes.ITERATE) {
    // 说明是遍历操作
    // 此时没有第三个参数 key
    // console.log("收集器：原始对象为", target);
    console.log(`收集器：代理对象${type}操作被拦截`);
    return;
  }

  // console.log("收集器：原始对象为", target);
  console.log(`收集器：代理对象${key}属性的${type}操作被拦截`);
}
